#!/usr/bin/env python
#-*- coding:utf-8 -*-
# author:pingyingnan
# datetime:2019/6/1 10:02
# software: PyCharm Community Edition


# 从文件中读取用例步骤

from testcase.p_markettest import mainmodole
import time,os,xlrd
from common.login import Login
from common.p_woniubossreport import WoniuCBTReport
class do_case:
    def __init__(self):
        self.st = Login()
        self.driver = self.st.driver

    def read_excel_test(self, sheets):
        # 文件路径
        filepath = os.path.abspath('../')
        filename = filepath + "/data/p_case.xlsx"
        # 打开文件
        excel = xlrd.open_workbook(filename)
        # 打开对应的表
        sheet = excel.sheet_by_name(sheets)
        # 获取行数
        r_num = sheet.nrows
        print(f'共有{r_num}行')
        # 循环读取，每一行完成一个用例
        for r in range(39, r_num):
        # for r in range(10, 11):
            print(f'开始第{r}次测试')
            #　读取一行的内容
            row_info = sheet.row_values(r)
            print(row_info)
            # 获取登录用户，并登录
            mainmodole.load(self, row_info[1])

            # 读取主模块，子模块
            time.sleep(1)
            mod = row_info[2].split('\n')
            a, b = mod[0], mod[1]
            # 进去主模块、子模块
            mainmodole.module(self, a, b)

            # 读取操作步骤
            time.sleep(1)
            do = row_info[3].split('\n')
            # 每一行是一个操作，循环读取从而完成连续操作
            for i in range(len(do)):
                print(f'操作的第{i}步')
                step = do[i].split(',')
                # print(step)
                # tools：操作类型（下拉框、点击等）
                # way: 定位方式
                # data：定位的值
                # values：传的值（比如输入操作要输入的内容）
                # print(step[0],step[3])
                tools, way, data, values = step[0], step[1], step[2], step[3]
                # print(tools, way, data, values)
                mainmodole.dosomething(self, tools, way, data, values)
                time.sleep(1)


            time.sleep(1)
            # 断言
            asts = row_info[4].split(',')
            # print(asts)
            id,method,data,value,mod,results,module = asts[0],asts[1],asts[2],asts[3],asts[4],asts[5],asts[6]
            mainmodole.doassert(self,id, method, data, value, mod,results,module)
            time.sleep(2)
            print('断言完成')
            # # 后期清扫工作，方便点击注销来执行下一个用例
            # # 如果该单元格内容为，则可以直接点击注销
            # if row_info[5] == '':
            #     self.driver.find_element_by_link_text('[注销]').click()
            #     print('注销成功')
            #     time.sleep(2)
            #
            # # 否则就读取操作，直到可以注销
            # else :
            #     do = row_info[5].split('\n')
            #
            #     # 每一行是一个操作，循环读取从而完成连续操作
            #     for i in range(len(do)):
            #         print(f'断言的第{i}步')
            #         step = do[i].split(',')
            #         print(step)
            #         # print(step)
            #         # tools：操作类型（下拉框、点击等）
            #         # way: 定位方式
            #         # data：定位的值
            #         # values：传的值（比如输入操作要输入的内容）
            #         print(step[0], step[3])
            #         tools, way, data, values = step[0], step[1], step[2], step[3]
            #         # print(tools, way, data, values)
            #         mainmodole.dosomething(self, tools, way, data, values)
            #         time.sleep(1)
            self.driver.refresh()
            time.sleep(1)
            self.driver.find_element_by_link_text('[注销]').click()
            print('注销成功')
            time.sleep(2)

if __name__ == '__main__':
    do = do_case()
    do.read_excel_test('case')